﻿using System.Collections.Generic;
using System.Threading.Tasks;

namespace SocialApi.Instagram.Entities.Methods.Comments
{
    /// <summary>
    /// Методы для работы с комментариями
    /// </summary>
    public interface ICommentMethods
    {
        /// <summary>
        /// Получает список всех комментариев текущего медиа
        /// </summary>
        /// <param name="mediaId">Id медиа</param>
        IEnumerable<ICommentData> Comments(long mediaId);

        /// <summary>
        /// Добавляет новый комментарий для текущего медиа
        /// </summary>
        /// <param name="comment">Текст комментария</param>
        /// <param name="mediaId">Id медиа</param>
        void Comments(string comment, long mediaId);

        /// <summary>
        /// Удаляет комментарий для текущего медиа
        /// </summary>
        /// <param name="commentId">Id комментария</param>
        /// <param name="mediaId">Id медиа</param>
        void Comments(long commentId, long mediaId);

        /// <summary>
        /// Получает список всех комментариев текущего медиа
        /// </summary>
        /// <param name="mediaId">Id медиа</param>
        Task<IEnumerable<ICommentData>> CommentsAsync(long mediaId);

        /// <summary>
        /// Добавляет новый комментарий для текущего медиа
        /// </summary>
        /// <param name="text">Текст комментария</param>
        /// <param name="mediaId">Id медиа</param>
        Task CommentsAsync(string text, long mediaId);

        /// <summary>
        /// Удаляет комментарий для текущего медиа
        /// </summary>
        /// <param name="commentId">Id комментария</param>
        /// <param name="mediaId">Id медиа</param>
        Task CommentsAsync(long commentId, long mediaId);
    }
}